package com.example.Arithmetic.Lettcode;

import org.junit.jupiter.api.Test;

import java.util.HashMap;

/**
 * 日期：2023/12/25
 * 时间：20:53
 * 描述：力扣第三题
 * 解题：新老指针指向字符串，记录中间出现的最大值
 */
public class E01Lettcode3 {
    public int lengthOfLongestSubstring(String s) {
        HashMap map = new HashMap();
        int begin = 0;
        int maxLenght = 0;
        for (int end = 0; end < s.length(); end++) {
            char c = s.charAt(end);
            if (map.containsKey(c)){   //重复时调整begin
                begin = Math.max(begin, (int)map.get(c) + 1);
                map.put(c,end);
            }else {   //不重复
                map.put(c,end);
            }
            maxLenght=Integer.max(maxLenght,end-begin+1);
        }
        return maxLenght;
    }

    @Test
    public void test(){
        System.out.println(new E01Lettcode3().lengthOfLongestSubstring("qweqrtqw"));
    }
}

